package com.kinghood.productcenter.service.base;

import com.kinghood.productcenter.common.model.dao.base.BaseGoodsDO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.kinghood.productcenter.common.model.dto.MoveChangeSortReqDTO;
import com.kinghood.infrastructure.model.dto.StatusReqDTO;
import com.kinghood.productcenter.common.model.dto.base.GoodsQueryDTO;
import com.kinghood.productcenter.common.model.dto.base.GoodsReqDTO;
import com.kinghood.productcenter.common.model.vo.base.GoodsVO;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * <p>
 * 基础选项-货类 服务类
 * </p>
 *
 * @author KingHood
 * @since 2023-12-20
 */
public interface IBaseGoodsService extends IService<BaseGoodsDO> {

    /**
     * 列出所有品类
     *
     * @param param 参数
     * @author jp
     * @date 2023/12/27
     */
    List<GoodsVO> listAllGoods(GoodsQueryDTO param);

    /**
     * 添加或更新
     *
     * @param param 参数
     * @author jp
     * @date 2023/12/27
     */
    void addOrUpdateGoods(GoodsReqDTO param);

    /**
     * 更新状态
     *
     * @param param 参数
     * @author jp
     * @date 2023/12/27
     */
    void updateGoodsStatus(StatusReqDTO param);

    /**
     * 删除
     *
     * @param id id
     * @author jp
     * @date 2023/12/27
     */
    void delGoods(Long id);

    /**
     * 拖动更改排序
     *
     * @param param 参数
     * @author jp
     * @date 2023/12/28
     */
    void changeSort(MoveChangeSortReqDTO param);

    /**
     * 详细
     *
     * @param id id
     * @author jp
     * @date 2023/12/28
     */
    GoodsVO detailGoods(Long id);

    /**
     * 下载商品
     *
     * @param param    参数
     * @param response 回答
     * @author jp
     * @date 2024/01/04
     */
    void downloadGoods(GoodsQueryDTO param, HttpServletResponse response);
}
